/* eslint-disable array-callback-return */
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    conents: [],
    // 当前未完成事件的数量
    num: 0,
    // 已完成的数量
    completed: [],
    // 未完成数量
    undone: []
  },
  // 不会修改原有的state元素
  getters: {
    // showCompleted (state) {
    //   state.conents.forEach((item) => {
    //     if (item[2]) {
    //       console.log(item)
    //     }
    //   })
    // }
  },
  // mutations 才有资格修改state内的值
  mutations: {
    // 点击添加事件，在conents内添加一条数据
    addConent (state, objset) {
      // 每添加一个事件，num 加1
      state.num++
      state.conents.push(objset)
    },
    // 当某一个复选框选中时，更改选中的复选框状态
    targetConent (state, id) {
      // 点击复选框时，清空未完成数量
      state.num = 0
      state.conents.forEach((item) => {
        if (item[0] === id) {
          if (item[2] === true) {
            item[2] = false
          } else {
            item[2] = true
          }
        }
        if (item[2] === false) {
          state.num++
        }
      })
    },
    // 点击删除按钮时，删除当前的事件
    removeConent (state, id) {
      state.conents.forEach((item, index) => {
        if (item[0] === id) {
          // 判断当前的复选框状态是否未false，如果为false，则num-1
          if (item[2] === false) {
            state.num--
            state.conents.splice(index, 1)
          } else {
            state.conents.splice(index, 1)
          }
        }
      })
      // 判断已完成的列表内是否有数据
      if (state.completed.length > 0) {
        state.completed.forEach((item, index) => {
          if (item[0] === id) {
            // 判断当前的复选框状态是否未false，如果为false，则num-1
            state.completed.splice(index, 1)
          }
        })
      }
      // 判断未完成的列表内是否有数据
      if (state.undone.length > 0) {
        state.undone.forEach((item, index) => {
          if (item[0] === id) {
            // 判断当前的复选框状态是否未false，如果为false，则num-1
            state.undone.splice(index, 1)
          }
        })
      }
    },
    // 点击删除已完成的事件
    removeCountAll (state) {
      // state.conents.forEach((item, index) => {
      //   if (item[2]) {
      //     const num = state.conents.indexOf(item)
      //     console.log(num)
      //     state.conents.splice(num, 1)
      //   }
      //   // console.log(index)
      // })
      const conentsList = []
      state.conents.some((item) => {
        if (item[2] === false) {
          conentsList.push(item)
        }
      })
      state.completed = []
      state.conents = conentsList
      // console.log(conentsList)
    },
    // 点击已完成，事件容器内的数据全部为已完成
    completedList (state) {
      const conentsList = []
      state.conents.some((item) => {
        if (item[2] === true) {
          conentsList.push(item)
        }
      })
      state.completed = conentsList
    },
    // 点击未完成，显示未完成的列表
    undoneList (state) {
      const conentsList = []
      state.conents.some((item) => {
        if (item[2] === false) {
          conentsList.push(item)
        }
      })
      state.undone = conentsList
    }
  },
  actions: {
    // 点击删除已完成的事件，事件间隔一秒被删除
    removeConentAsync (context) {
      setTimeout(() => {
        context.commit('removeCountAll')
      }, 2000)
    }
  },
  modules: {
  }
})
